{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Activation Functions\n",
    "\n",
    "This function introduces activation functions in TensorFlow\n",
    "\n",
    "We start by loading the necessary libraries for this script."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda3_5_0_0\\lib\\site-packages\\h5py\\__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Start a graph session"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Initialize the X range values for plotting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-10.          -9.7979798   -9.5959596   -9.39393939  -9.19191919\n",
      "  -8.98989899  -8.78787879  -8.58585859  -8.38383838  -8.18181818\n",
      "  -7.97979798  -7.77777778  -7.57575758  -7.37373737  -7.17171717\n",
      "  -6.96969697  -6.76767677  -6.56565657  -6.36363636  -6.16161616\n",
      "  -5.95959596  -5.75757576  -5.55555556  -5.35353535  -5.15151515\n",
      "  -4.94949495  -4.74747475  -4.54545455  -4.34343434  -4.14141414\n",
      "  -3.93939394  -3.73737374  -3.53535354  -3.33333333  -3.13131313\n",
      "  -2.92929293  -2.72727273  -2.52525253  -2.32323232  -2.12121212\n",
      "  -1.91919192  -1.71717172  -1.51515152  -1.31313131  -1.11111111\n",
      "  -0.90909091  -0.70707071  -0.50505051  -0.3030303   -0.1010101\n",
      "   0.1010101    0.3030303    0.50505051   0.70707071   0.90909091\n",
      "   1.11111111   1.31313131   1.51515152   1.71717172   1.91919192\n",
      "   2.12121212   2.32323232   2.52525253   2.72727273   2.92929293\n",
      "   3.13131313   3.33333333   3.53535354   3.73737374   3.93939394\n",
      "   4.14141414   4.34343434   4.54545455   4.74747475   4.94949495\n",
      "   5.15151515   5.35353535   5.55555556   5.75757576   5.95959596\n",
      "   6.16161616   6.36363636   6.56565657   6.76767677   6.96969697\n",
      "   7.17171717   7.37373737   7.57575758   7.77777778   7.97979798\n",
      "   8.18181818   8.38383838   8.58585859   8.78787879   8.98989899\n",
      "   9.19191919   9.39393939   9.5959596    9.7979798   10.        ]\n"
     ]
    }
   ],
   "source": [
    "x_vals = np.linspace(start=-10., stop=10., num=100)\n",
    "print(x_vals)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Activation Functions:\n",
    "\n",
    "ReLU activation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.  3. 10.]\n",
      "[ 0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.          0.          0.          0.\n",
      "  0.          0.          0.1010101   0.3030303   0.50505051  0.70707071\n",
      "  0.90909091  1.11111111  1.31313131  1.51515152  1.71717172  1.91919192\n",
      "  2.12121212  2.32323232  2.52525253  2.72727273  2.92929293  3.13131313\n",
      "  3.33333333  3.53535354  3.73737374  3.93939394  4.14141414  4.34343434\n",
      "  4.54545455  4.74747475  4.94949495  5.15151515  5.35353535  5.55555556\n",
      "  5.75757576  5.95959596  6.16161616  6.36363636  6.56565657  6.76767677\n",
      "  6.96969697  7.17171717  7.37373737  7.57575758  7.77777778  7.97979798\n",
      "  8.18181818  8.38383838  8.58585859  8.78787879  8.98989899  9.19191919\n",
      "  9.39393939  9.5959596   9.7979798  10.        ]\n"
     ]
    }
   ],
   "source": [
    "print(sess.run(tf.nn.relu([-3., 3., 10.])))\n",
    "y_relu = sess.run(tf.nn.relu(x_vals))\n",
    "print(y_relu)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ReLU-6 activation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 3. 6.]\n",
      "[0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.         0.         0.         0.\n",
      " 0.         0.         0.1010101  0.3030303  0.50505051 0.70707071\n",
      " 0.90909091 1.11111111 1.31313131 1.51515152 1.71717172 1.91919192\n",
      " 2.12121212 2.32323232 2.52525253 2.72727273 2.92929293 3.13131313\n",
      " 3.33333333 3.53535354 3.73737374 3.93939394 4.14141414 4.34343434\n",
      " 4.54545455 4.74747475 4.94949495 5.15151515 5.35353535 5.55555556\n",
      " 5.75757576 5.95959596 6.         6.         6.         6.\n",
      " 6.         6.         6.         6.         6.         6.\n",
      " 6.         6.         6.         6.         6.         6.\n",
      " 6.         6.         6.         6.        ]\n"
     ]
    }
   ],
   "source": [
    "print(sess.run(tf.nn.relu6([-3., 3., 10.])))\n",
    "y_relu6 = sess.run(tf.nn.relu6(x_vals))\n",
    "print(y_relu6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sigmoid activation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.26894143 0.5        0.7310586 ]\n"
     ]
    }
   ],
   "source": [
    "print(sess.run(tf.nn.sigmoid([-1., 0., 1.])))\n",
    "y_sigmoid = sess.run(tf.nn.sigmoid(x_vals))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hyper Tangent activation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.7615942  0.         0.7615942]\n"
     ]
    }
   ],
   "source": [
    "print(sess.run(tf.nn.tanh([-1., 0., 1.])))\n",
    "y_tanh = sess.run(tf.nn.tanh(x_vals))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Softsign activation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.5  0.   0.5]\n"
     ]
    }
   ],
   "source": [
    "print(sess.run(tf.nn.softsign([-1., 0., 1.])))\n",
    "y_softsign = sess.run(tf.nn.softsign(x_vals))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Softplus activation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.31326166 0.6931472  1.3132616 ]\n"
     ]
    }
   ],
   "source": [
    "print(sess.run(tf.nn.softplus([-1., 0., 1.])))\n",
    "y_softplus = sess.run(tf.nn.softplus(x_vals))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Exponential linear activation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.63212055  0.          1.        ]\n"
     ]
    }
   ],
   "source": [
    "print(sess.run(tf.nn.elu([-1., 0., 1.])))\n",
    "y_elu = sess.run(tf.nn.elu(x_vals))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot the different functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20e20f8c128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nJTz66KPOV0IpperALQHAGHPKGJNjG14O+IhIi2ryxhtjYo0xsREREe6onku88MIL9qP81NRU9u3b\nB0BAQABXXXUVAP379+fAgQP2ea677jpEhD59+nD48OGGqLZSyoO55UlgEWkNHDXGGBEZiBV4Ml2x\nbEddGTnqHNNRb9Bt29a+N+mzWb16NevXr2fz5s0EBAQwbNgw8vPzAfD19bXn8/LyoqioyD5evjvo\n87lPJqXUhcklAUBEFgFxQAsRSQX+B/ABMMbMAyYDd4tIEZAHTDUX0B7v5MmTNG/enICAAHbu3Klv\n6FJKNQquugvophqmvwy87IqyzkdXX3018fHxXHzxxXTv3p1BgwY1dJWUUqpG2h30BU63l1KeRbuD\nVkopVSMNAEop5aE0ACillIfSAKCUUh5KA4BSSnkoDQBKKeWhNACcgyeffJKYmBj69OlD37592bJl\nS7V5N2zYQExMDH379iUlJYX333+/xuUPGTLEldVVSimHNADUUUJCAsuWLWP79u3s2LGD1atXExUV\nVW3+9957j4ceeojk5GSOHj1aqwCwadMmV1ZZKaUccktfQBeSI0eO0KJFC3s/Pi1aWH3arVmzhoce\neoiioiIGDBjAa6+9xjvvvMNHH33EypUrWb16Nfv27SMlJYW+ffsybdo0xowZw+23305BQQElJSV8\n+umndOnSheDgYHJycigpKeHee+9l3bp1dOzYkZKSEmbMmMHkyZPp0KED06ZN44svvqCwsJCPP/6Y\n7t27N+SmUUo1Mo0+AMjfpeZM5fRr04+kWUlV5jf/U7snoseMGcPjjz9O165dGT16NFOmTGHQoEFM\nnz6dNWvW0LVrV2677TZee+01HnjgATZu3Mg111zD5MmTWbt2Lc8++yzLli0DYPbs2dx///3ccsst\nFBQUUFxcXKGszz77jAMHDvDDDz9w7NgxevTowYwZM+zTW7Rowfbt23n11Vd59tln7e8hUEqp2tAm\noDoKDg4mKSmJ+Ph4IiIimDJlCvPnz6djx4507doVgGnTprF+/foalzV48GCeeuop/vnPf3Lw4EEC\nAgIqTN+4cSM33HADTZo0oXXr1owcObLC9Ouvvx6o2s20UkrVRqM/A6jtkbsr5/fy8iIuLo64uDh6\n9+7NwoULz6nsm2++mUGDBvHll18yduxY3njjDUaNGlVWtxr6aSpthqrczbRSStWGngHU0e7du9mz\n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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20e26a24f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x_vals, y_softplus, 'r--', label='Softplus', linewidth=2)\n",
    "plt.plot(x_vals, y_relu, 'b:', label='ReLU', linewidth=2)\n",
    "plt.plot(x_vals, y_relu6, 'g-.', label='ReLU6', linewidth=2)\n",
    "plt.plot(x_vals, y_elu, 'k-', label='ExpLU', linewidth=0.5)\n",
    "plt.ylim([-1.5,7])\n",
    "plt.legend(loc='upper left')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(x_vals, y_sigmoid, 'r--', label='Sigmoid', linewidth=2)\n",
    "plt.plot(x_vals, y_tanh, 'b:', label='Tanh', linewidth=2)\n",
    "plt.plot(x_vals, y_softsign, 'g-.', label='Softsign', linewidth=2)\n",
    "plt.ylim([-2,2])\n",
    "plt.legend(loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Acivation_Functions1](https://github.com/nfmcclure/tensorflow_cookbook/raw/jupyter_notebooks/01_Introduction/images/06_activation_funs1.png)\n",
    "\n",
    "![Acivation_Functions2](https://github.com/nfmcclure/tensorflow_cookbook/raw/jupyter_notebooks/01_Introduction/images/06_activation_funs2.png)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
